package com.example.weixinpayment.service;

import com.example.weixinpayment.constant.enums.OrderStatus;
import com.example.weixinpayment.entity.OrderInfo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface OrderInfoService extends IService<OrderInfo> {

    /**
     * @description: 根据产品id生成订单信息
     * @param: productId
     * @return: com.example.weixinpayment.entity.OrderInfo
     * @author: 刘助政
     * @date: 2021/12/30 17:01
     * */
    OrderInfo createOrderByProductId(Long productId);

    /**
     * @description: 更新订单编号为orderNo的支付二维码链接
     * @param: oderNo
     * @param: codeUrl
     * @return: void
     * @author: 刘助政
     * @date: 2021/12/30 17:51
     * */
    void updateCodeUrl(String orderNo, String codeUrl);

    /**
     * @description: 根据创建时间倒序查找订单列表
     * @param: null
     * @return: java.util.List<com.example.weixinpayment.entity.OrderInfo>
     * @author: 刘助政
     * @date: 2021/12/30 18:44
     * */
    List<OrderInfo> listOrderByCreateTimeDesc();

    /**
     * @description: 更新订单状态
     * @param: orderNo 订单号
     * @param: status  订单状态
     * @return: void
     * @author: 刘助政
     * @date: 2022/1/11 16:24
     * */
    void updateOrderStatus(String orderNo, OrderStatus status);

    /**
     * @description: 根据订单号获取订单状态
     * @param: orderNo
     * @return: java.lang.String
     * @author: 刘助政
     * @date: 2022/1/11 17:00
     * */
    String getOrderStatus(String orderNo);

    /**
     * @description: 查询超过minutes时间未支付的订单
     * @param: minutes
     * @return: java.util.List<com.example.weixinpayment.entity.OrderInfo>
     * @author: 刘助政
     * @date: 2022/1/11 19:12
     * */
    List<OrderInfo> getNoPayOrderByDuration(int minutes);

    /**
     * @description: 根据订单号获取订单信息
     * @param: orderNo
     * @return: com.example.weixinpayment.entity.OrderInfo
     * @author: 刘助政
     * @date: 2022/1/12 14:39
     * */
    OrderInfo getOrderByOrderNo(String orderNo);
}
